Embodiments presented herein generally relate to computer systems, and more specifically, to paging I/O translation table entries.
Generally, computing systems rely on I/O translation tables to provide a mapping of a specified virtual I/O address to a physical memory address in a range of addresses that a given I/O device may access. During a direct memory address (DMA) read or write operation, the I/O translation table maps a segment to an address in physical memory, e.g., using a Translation Control Entry (TCE) table in an I/O memory management unit (IOMMU). A computing system may provide an I/O translation table for each I/O device to improve DMA operations, prevent conflicting memory accesses by logical partitions that share the memory, and translate from an address in a peripheral bus (e.g., a PCI bus) to a memory address.
Further, a computing system may be configured to provide hardware virtualization. For instance, the computing system may spawn, via a hypervisor, multiple logical partitions, where each logical partition serves as a distinct virtual computing system that shares physical hardware resources (e.g., processing, storage capacity, etc.) with other logical partitions. A client operating system (OS) executing in a logical partition typically must communicate with the hypervisor to associate an entry in the I/O translation table of a device with an address of a page of memory assigned to the logical partition. As the bandwidth supported by I/O devices increases, larger I/O translation tables are needed to avoid the client OS from having to frequently interface with the hypervisor to configure the I/O translation table entries. However, increased sizes in I/O translation tables result in increased consumption of system resources, such as memory—which leads to the hypervisor having fewer resources to assign to logical partitions in the computer system. Further, because I/O operations are typically performed in bursts, large portions of I/O translation table may be unused during a number of periods, resulting in less than optimal resource usage.